home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Libraries / TurboTCP 1.0.1 / TurboTCP.source / CTelnetInterpreter.h < prev    next >
Text File  |  1993-12-10  |  3KB  |  104 lines

  1. /*
  2. ** CTelnetInterpreter.h
  3. **
  4. **    TurboTCP support library
  5. **    Generic Telnet protocol interpreter
  6. **
  7. **    Copyright © 1993, FrostByte Design / Eric Scouten
  8. **
  9. */
  10.  
  11.  
  12. #pragma once
  13.  
  14. #include "CTCPSessionDoc.h"
  15. #include "Telnet.protocol.h"
  16.  
  17. CLASS CApplication;
  18.  
  19.  
  20. // state variable for the Telnet command parser
  21.  
  22. typedef unsigned char uchar;
  23. typedef enum TelnetState {
  24.     normalChar,                            // interpret as character
  25.     gotIAC,                                // received an IAC character
  26.     gotSB,                                // in subnegotiation
  27.     gotWILL,                                // received a WILL option
  28.     gotWONT,                                // received a WONT option
  29.     gotDO,                                // received a DO option
  30.     gotDONT,                                // received a DONT option
  31.     gotIACinSB                            // received IAC while in SB
  32. } TelnetState;
  33.  
  34. #define sbBfrMax        80                    // max size of subnegotiation buffer
  35. #define lineBfrMax        80                    // max size of line buffer
  36.  
  37.  
  38. /*______________________________________________________________________
  39. **
  40. ** CTelnetInterpreter
  41. **
  42. **    This abstract class is a specialized TCP session document. It provides the basic
  43. **    functionality of a Telnet protocol interpreter. It may be used to implement command-line
  44. **    protocols which are based on the Telnet protocol (i.e., NNTP or FTP).
  45. **
  46. **    This class provides no user interface behaviors and assumes no character-based
  47. **    terminal. You will need to subclass this class to interpret the specific protocol
  48. **    you are implementing.
  49. **
  50. **    NOTE: This class is provided only as a convenience. You need not include it in your project.
  51. **
  52. */
  53.  
  54. class CTelnetInterpreter : public CTCPSessionDoc {
  55.  
  56. protected:
  57.     TelnetState    itsState;                    // current command parser state
  58.     short        sbBfrIndex;                // current index to subnegotiation buffer
  59.     uchar        sbBfr [sbBfrMax];            // subnegotiation buffer
  60.     short        lineBfrIndex;                // current index to subnegotiation buffer
  61.     uchar        lineBfr [lineBfrMax];        // subnegotiation buffer
  62.     Boolean        useLineBfr;                // hold all characters until full line received
  63.     Boolean        showDebug;                // show debugging codes
  64.  
  65.  
  66.     // initialization
  67.  
  68. public:
  69.     void ITelnetInterpreter (CApplication *aSupervisor, Boolean printable, long recBufferSize,
  70.                         b_16 theDefaultPort, short autoReceiveSize, short autoReceiveNum);
  71.  
  72.  
  73.     // data handling methods
  74.  
  75.     virtual void HandleDataArrived (Ptr theData, b_16 theDataSize, Boolean isUrgent);
  76.     virtual void HandleNVTChar (char theChar);
  77.     virtual void HandleNVTLine (char *theLine);
  78.  
  79.  
  80.     // Telnet command handling
  81.  
  82.     virtual void ReceivedIAC (uchar theCommand);
  83.     virtual void ReceivedWill (uchar theOption);
  84.     virtual void ReceivedWont (uchar theOption);
  85.     virtual void ReceivedDo (uchar theOption);
  86.     virtual void ReceivedDont (uchar theOption);
  87.     virtual void ReceivedBRK (void);
  88.     virtual void ReceivedSynch (void);
  89.     virtual void ReceivedIP (void);
  90.     virtual void ReceivedAO (void);
  91.     virtual void ReceivedAYT (void);
  92.     virtual void ReceivedEC (void);
  93.     virtual void ReceivedEL (void);
  94.     virtual void ReceivedGA (void);
  95.     virtual void ReceivedSB (uchar theChar);
  96.     virtual void ReceivedSE (void);
  97.  
  98.  
  99.     // debugging methods
  100.  
  101.     virtual void PrintDebugStr (char *theDebugStr);
  102.     virtual void PrintDebugCharNum (char theChar, char leftBracket, char rightBracket);
  103.  
  104. };